//模拟实现memcpy()内存函数，
//void * memcpy ( void * destination, const void * source, size_t num );
//函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。
//这个函数在遇到 '\0' 的时候并不会停下来。
//如果source和destination有任何的重叠，复制的结果都是未定义的。就是说有重叠部分不能完成

////使用memcpy()内存函数
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//    int arr1[]={1,2,3,4,5,6,7,8,9,10};
//    int arr2[50]={0};
//    memcpy(arr2,arr1,20);//20代表字节，在int类型表示有5个数
//    for(int i=0;i<20;i++)
//    {
//        printf("%d ",arr2[i]);
//    }
//    printf("\n");
//    return 0;
//}


////模拟实现my_memcpy()
//#include<stdio.h>
//#include<assert.h>
//void* my_memcpy(void* destination,void* source,size_t num)
//{
//    //由于拷贝，所以先断言
//    assert(destination&&source);
//    void* ret=destination;
//    while(num--)
//    {
//        //由于不知传过来的类型是什么，而这函数是以字节为单位拷贝，所以把类型强制转换为char* ,以1个单位来访问更方便
//        *(char*)destination=*(char*)source;
//        source=(char*)source+1;
//        destination=(char*)destination+1;
//    }
//    return ret;

//}

//int main()
//{
//    int arr1[]={10,20,30,40,50,60,70,80,90};
//    int arr2[100]={0};
//    my_memcpy(arr2,arr1,5*sizeof(int));
//    for(int i=0;i<5;i++)
//    { 
//        printf("%d ",arr2[i]);
//    }
//    printf("\n");
//    return 0;
//}
